#include <stdio.h>
#include <stdlib.h>
#include "persona.h"

/*
  Name: Proyecto archivo-vector
  Copyright: MINE!
  Author: Gerard Umbert Sitjes
  Date: 12/05/09 16:10
  Description: El programa interactua con un fichero y permite copiar sus datos a un vector bidimensional
*/

int main(int argc, char *argv[])
{

FILE *fpointer,*fpointer2;
int  seleccion,telefono,cont;
char fichero[50] = "example.txt";
char fichero2[50]= "copia.txt";
char contenido;
char mynum[250],nombre[50],apellido[50],apellido2[50];
char lecturas[250];

Person Persona[30];

seleccion = 'a';

printf("SELECCIONE\n\n\t1 - Usar archivo predefinido\n\t2 - Usar archivo existente\n\nSeleccion >> ");
_flushall();
scanf("%i",&seleccion);

switch (seleccion){
    case 1:
         printf("El archivo a usar es %s\n",fichero);
         break;

    case 2:
        printf("Introduce archivo [ <nombre>.<ext> ]\n\nArchivo >> ");
        _flushall();
        scanf("%[^\n]",&fichero);
        printf("\nEl archivo a usar es %s\n",fichero);
        break;

    default:
        printf("Opcion erronea. Se usara archivo por defecto '%s'\n",fichero);
        break;
}
system("PAUSE");

seleccion = 'a';

while (seleccion != 0){

system ("cls");    
printf("%s\n\nESCOJE UNA OPCION\n\n",fichero);
printf("\t1 - A%cadir Contacto\n",-92);
printf("\t2 - Leer primer nombre\n");
printf("\t3 - Leer archivo completo\n");
printf("\t4 - Borrar archivo\n");
printf("\t5 - Copiar Archivo\n");
printf("\t6 - Consultar Agenda\n");
printf("\t7 - Consultar Vector\n");
printf("\t8 - Ordenar Vector");
printf("\n\t0 - Salir\n\nSeleccion >> ");
_flushall();
scanf("%i",&seleccion);

    switch (seleccion) {  
      case 1:
          system ("cls");
          printf("Escribir en archivo\n\n");
          _flushall();
          printf("Escribe Nombre: ");
          scanf("%s",&nombre);
          
          printf("Escribe Apell: ");
          scanf("%s",&apellido);
          
          printf("Escribe Apell2: ");
          scanf("%s",&apellido2);
          
          printf("Escribe Telf: ");
          scanf("%i",&telefono);

          fpointer=fopen(fichero,"a+");

          if (fpointer ==NULL){
             printf("Error");
             exit(-1);
          }

          fprintf(fpointer, "\n%s\t%s\t%s\t%i",nombre,apellido,apellido2,telefono);
          fclose(fpointer);
          system("PAUSE");
          break;

      case 2:
          system ("cls");
          printf("Leer del archivo\n\n\n");
          fpointer=fopen(fichero,"r");

          if (fpointer == NULL){
             printf("Error");
             exit(-1);
          }

          fscanf (fpointer, "%s", &lecturas);
          printf("%s\n", lecturas);
          fclose(fpointer);
          system("PAUSE");
          break;

      case 3:
          system ("cls");
          printf("Leer archivo completo\n\n\n");
          fpointer=fopen(fichero,"r");
          if (fpointer == NULL)
              exit(1);
              printf("\nEl contenido del archivo de prueba es \n\n");
          while (feof(fpointer) == 0){
                contenido = fgetc(fpointer);
                printf("%c",contenido);
          }
          fclose(fpointer);
          system("PAUSE");
          break;

      case 4:
          system ("cls");
          unlink(fichero);
          system("PAUSE");
          break;

      case 5:
          system("cls");
          printf("Introduce el nombre del nuevo archivo");
          _flushall();
          scanf("^[\n]",&fichero2);

          fpointer=fopen(fichero,"r+");
          fpointer2=fopen(fichero2,"w+");
          if ( (fpointer == NULL) || (fpointer2 == NULL) )
             printf("Error al abrir ficheros");
          else {
             while ((contenido=getc(fpointer)) != EOF ) {
                   putc(contenido,fpointer2);
             }
             fclose(fpointer);
             fclose(fpointer2);
          }
      case 6:
          system ("cls");
          printf("Agenda\n\n\n");
          fpointer=fopen(fichero,"r");
          
          if (fpointer == NULL){
             printf("Error");
             exit(-1);
          }
          cont=1;
          while (feof(fpointer) == 0){
                system ("cls");
                
                fscanf(fpointer, "%s\t%s\t%s\t%i", &nombre,&apellido,&apellido2,&telefono);
                
                printf("Contacto Numero -%i-\n\nNombre: %s\nApell:  %s\nApell2: %s\nTelf:   %i\n\n", cont,nombre,apellido,apellido2,telefono);
                cont++;
                system("PAUSE"); 
                
                strcpy(Persona[cont].nombre_vec,nombre);
                strcpy(Persona[cont].apellido_vec,apellido);
                strcpy(Persona[cont].apellido2_vec,apellido2);
                Persona[cont].telefono_vec=telefono;
          }
          system ("cls");
          fclose(fpointer);
          system("PAUSE"); 
          
          break;
          
      case 7:
          system ("cls");
          
          fpointer=fopen(fichero,"r");
          
          if (fpointer == NULL){
             printf("Error");
             exit(-1);
          }
          cont=1;
          
          while (feof(fpointer) == 0){
                system ("cls");
                
                fscanf(fpointer, "%s\t%s\t%s\t%i", &nombre,&apellido,&apellido2,&telefono);
                cont++;
                
                strcpy(Persona[cont].nombre_vec,nombre);
                strcpy(Persona[cont].apellido_vec,apellido);
                strcpy(Persona[cont].apellido2_vec,apellido2);
                Persona[cont].telefono_vec=telefono;
          }
          
          printf("Mostrar informacion del Vector");
          
          _flushall();
          printf("\n\nIntroduce posicion del vector a mostrar: ");
          scanf("%i",&cont);
          
          cont++;
          
          printf("\n\nNombre: %s",Persona[cont].nombre_vec);
          printf("\nApell:  %s",Persona[cont].apellido_vec);
          printf("\nApell2: %s",Persona[cont].apellido2_vec);
          printf("\nTelf:   %i\n\n",Persona[cont].telefono_vec);          
          system("PAUSE"); 
           
           break;
      case 8:
          printf("ordenando");
          break;

      case 0:
          break;

      default: 
          system ("cls");
          printf("No es una seleccion valida\n\n\n");
          system("PAUSE");      
          break;
    }
}
  system ("cls");
  printf("\nEl programa va a cerrarse ");
  system("PAUSE");
  return 0;
}
